Systems and methods for object tracking using wireless beacons

ABSTRACT

A method for distributing micro-location-based notifications to a computing device includes receiving a unique identifier associated with a first entity, the unique identifier collected from a wireless beacon by a computing device proximal the wireless beacon, receiving identification of a second entity affiliated with the wireless beacon from the first entity; and in response to positive identification of the second entity as an authorized entity, authorizing delivery of a communication from the second entity, the communication executing on the computing device responsive to receipt of the unique identifier at the computing device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This invention is a continuation of U.S. patent application Ser. No.15/620,014, filed 12 Jun. 2014, which is a continuation of U.S. patentapplication Ser. No. 15/288,302, filed 7 Oct. 2016, now issued as U.S.Pat. No. 9,712,967, which is a continuation of U.S. patent applicationSer. No. 14/956,209, filed 1 Dec. 2015, now issued as U.S. Pat. No.9,491,586, which is a continuation of U.S. patent application Ser. No.14/463,582, filed on 19 Aug. 2014, now issued as U.S. Pat. No.9,202,245, which claims the benefit of U.S. Provisional Application No.61/867,493, filed on 19 Aug. 2013 and to U.S. Provisional ApplicationNo. 61/867,498, filed on 19 Aug. 2013, all of which are incorporated intheir entireties by this reference.

TECHNICAL FIELD

This invention relates generally to the field of wireless communication,and more specifically to a new and useful method for distributingnotifications in the field of wireless communication.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a flowchart representation of a first method in accordancewith the invention;

FIG. 2 is a flowchart representation of one variation of the firstmethod;

FIG. 3 is a flowchart representation of a second method in accordancewith the invention;

FIG. 4 is a flowchart representation of one variation of the secondmethod; and

FIGS. 5A, 5B, and 5C are flowchart representations in accordance withvariations of the second method.

DESCRIPTION OF THE EMBODIMENTS

The following description of the embodiments of the invention is notintended to limit the invention to these embodiments, but rather toenable any person skilled in the art to make and use this invention.

1. First Method

As shown in FIG. 1, a method S100 for distributing micro-location-basednotifications to a mobile computing device includes: wirelesslyreceiving a unique identifier from a wireless beacon in Block S110;estimating a proximity of the mobile computing device to the wirelessbeacon in Block S120; confirming user access to data associated with thewireless beacon in Block S130; retrieving a notification associated withthe wireless beacon from a computer network in Block S140; andpresenting the notification on the mobile computing device based on theestimated proximity of the mobile computing device to the wirelessbeacon in Block S150.

The method S100 can be implemented as a native application executing ona mobile computing device (e.g., a smartphone, a tablet) and interactingwith a wireless beacon to estimate a location of the mobile computingdevice—and therefore a user—relative to the wireless beacon. Thewireless beacon can include a water- and/or dust-resistant cover housinga battery, a wireless communication module, one or more sensors (e.g.,an accelerometer, a gyroscope, a temperature sensor, etc.), and anadhesive backing. In one example, the wireless beacon can be placed(i.e., statically arranged) within a retail setting (i.e., retailer)such that, when a user enters the retailer with his mobile computingdevice executing a native retail application that implements the methodS100, the mobile computing device and the beacon can interact to delivermicro-location-, product-, and/or user-specific data, deals,notification s, etc. to the use. In another example, multiple wirelessbeacons can be placed over various regions of the window of a displaycase within a bakery such that, when a user enters the bakery with hismobile computing device, the mobile computing device and various beaconscooperate to determine the user's position within the bakery and deliverproduct-related information to the user through the mobile computingdevice based on the estimated proximity of the user to a particularfoodstuff within the display case.

The method S100 can therefore function to handle communications with oneor more wireless beacons to deliver timely, location-specificnotifications to a user through a mobile computing device, therebysupporting, guiding, and/or improving the user's shopping experiencewithin a retail or similar setting.

Block S110 of the method S100 recites wirelessly receiving a uniqueidentifier from a wireless beacon. Generally, Block S110 functions tohandle communication between the wireless beacon and the mobilecomputing device (i.e., the native application executing on the mobilecomputing device and implementing the method S100). In oneimplementation, the wireless communication module within the wirelessbeacon can include a Bluetooth transceiver that transmits a uniqueidentifier (ID), and the Block S110 can capture the unique identifierand pass the unique identifier to Block S130 to confirm access toadditional data corresponding to the particular wireless beacon and/orto Block S140 to retrieve the additional data, such as from a domainname system (DNS). In this implementation, the wireless beacon cantransmit the unique identifier to any device within range, rendering theunique identifier (and any additional data transmitted with the uniqueidentifier) public (i.e., not private), but only devices with access tothe DNS can retrieve information corresponding to the unique identifier,such as retailer data or product pricing, as described below. Forexample, Block S110 can pass a hashed beacon identifier into the DNS andthe DNS can return a true identifier of the beacon to the mobilecomputing device, which is handled in subsequent Blocks to determineuser access to the associated beacon data.

Alternatively, Block S110 can handle wireless communication with one ormore beacons over Wi-Fi, cellular, or other radio-frequencycommunication or via any other suitable type of wireless communicationprotocol. The wireless beacon can also encrypt a transmitted signal, andBlock S110 can receive and then decrypt the encrypted signal.

Block S110 can also receive additional data from the wireless beacon,such as accelerometer data, gyroscope data, temperature data, humiditydata, and/or other relevant data from an accelerometer, gyroscope,temperature sensor, humidity sensor, and/or other sensor arranged withinthe wireless beacon, respectively. Alternatively, Block S140 canretrieve such additional data from the wireless beacon oncecommunication between the wireless beacon and the mobile computingdevice is confirmed or established. Block S110 can further handlewireless communication with multiple wireless beacons substantiallysimultaneously, such as with up to eight discrete wireless beaconswithin range (e.g., 50 m) of the mobile computing device, as describedbelow. However, Block S110 can function any other way to wirelesslyreceive a unique identifier or other data from the wireless beacon.

Block S120 of the method S100 recites estimating a proximity of themobile computing device to the wireless beacon. In one implementation,Block S120 functions to estimate a physical distance between the mobilecomputing device and the wireless beacon based on a strength of thewireless signal received in Block S110 and/or based on a wireless signalreceived subsequently, wherein Block S120 correlates a strong wirelesssignal strength with a first distance between the mobile computingdevice and the wireless beacon and a weak wireless signal strength witha second distance between the mobile computing device and the wirelessbeacon more than the first distance. In another implementation, BlockS120 transmits a data packet (e.g., a pseudorandom number) to thewireless beacon, subsequently receives a response to the data packetfrom the wireless beacon (e.g., the pseudorandom), and estimates adistance between the mobile computing device and the wireless beaconbased on a total time between sending the data packet and receiving theresponse (i.e., a ‘time of flight’), such as based on a known responselatency (e.g., ‘turn around’ time) of the wireless beacon, as shown inFIG. 1.

Block S120 can also estimate an orientation of the mobile computingdevice relative to the wireless beacon. For example, Block S120 canreceive accelerometer and/or gyroscope data from an accelerometer and/ora gyroscope arranged within the wireless beacon, retrieve accelerometerand/or gyroscope data from a corresponding sensor(s) within the mobilecomputing device, and then compare the mobile computing device and thewireless beacon accelerometer and/or gyroscope data to estimate anorientation of the mobile computing device relative to the wirelessbeacon. Block S120 can therefore estimate both a location and anorientation of the mobile computing device relative to the wirelessbeacon.

In another implementation, Block S120 can interface with two or morewireless beacons to determine a position and/or orientation of themobile computing device relative to the wireless beacons. In oneexample, Block S120 triangulates the position of the mobile computingdevice relative to two wireless beacons within a retail setting byestimating a distance between the mobile computing device and eachbeacon, receiving a distance estimate for the distance between the twobeacons from at least one of the two beacons, and combining the threeforegoing distance estimates into a map of the position of the mobilecomputing device relative to the two beacons, as shown in FIGS. 1 and 2.In this example, the mobile computing device and the beacons canestimate a distance to another object (i.e., a wireless beacon) based ontime of flight of data transmitted between the mobile computing deviceand the wireless beacons, based on signal strength, or a based on anyother suitable method or technique. In another example, Block S120implements a zoning technique to estimate a position of the userrelative to one or more beacons. In this example, each wireless beaconwithin a space can broadcast a signal of a particular strength such thatwireless signals broadcast from adjacent wireless beacons do not overlap(or do not substantially overlap), and Block S120 predicts a user'slocation to be that of a particular location when the user's mobilecomputing device comes within range of the particular beacon. In thisexample, non-overlapping signal strengths can be set manually or learnedautomatically, such by automatically or manually increasing thebroadcast signal strength from a first beacon until a second beaconnearby detects the broadcast signal from the first beacon and thenreducing signal power by a factor of eight (i.e., P(r=1)=P(r=2)×(½)³)for a spherical wireless broadcast volume. In yet another example,beacons with a space can broadcast wireless signals of differentstrength, such as in cycles of 0 dBm, 4 dBm, 0 dBm, 4 dBm, etc., andBlock S120 can apply beacon signals of known strengths received by themobile computing device to locate the mobile computing device relativeto the beacon(s).

In the foregoing implementations, Block S120 can also retrieve a compassbearing from a beacon and implement the compass bearing to improveprediction of the location of the mobile computing device relative tothe beacon(s) and/or to improve a beacon map for the corresponding spaceor venue, as described below.

Beacons within a space or venue can also automatically generate a meshnetwork and self-calibrate broadcast signal strengths by estimatingdistances between beacons within the network. For example, each beaconwith a venue can listen for wireless signals (e.g., of substantiallyequivalent power) from all other beacons within range and save thestrength and associated beacon identifier of each received signal. Inthis example, Block S120 (or other processor connected to the network ofbeacons) can then merge these signal strength and beacon identifier datainto a map and/or graph of relative distances and relative positions ofbeacons. Block S120 can then implement the map and/or graph of relativedistances and relative positions of beacons to estimate a relativelocation of a mobile computing device, such as described above.

Block S120 can handle visualization of the determined location and/ororientation of the mobile computing device relative to one or morewireless beacons within the space, such as by displaying suchvisualization in real-time on a display of the mobile computing device.In one example, each wireless beacon includes a color-coded housing(e.g., one of red, blue, yellow, pink, or green, etc.) and outputs awireless signal containing an indicator of the housing color, and BlockS120 can receive the indicator of the housing color of the wirelessbeacon and display this color on the mobile computing device display. Inthis example, Block S120 can adjust the opacity of the displayed colorbased on the estimated distance between the mobile computing device anda corresponding wireless beacon, wherein the opacity of the displayedcolor is substantially proportional to the estimated distance betweenthe mobile computing device and the wireless beacon. Furthermore in thisexample, Block S120 can receive an indicator of the housing color ofeach of multiple wireless beacons and display a composite color that isa combination or ‘blend’ of the housing colors of the wireless beaconswithin range of the mobile computing device. In this example, thecomposite color can be a dynamic combination of the wireless beaconhousing colors based on an estimated distance between each correspondingwireless beacon and the mobile computing device. Alternatively, in theforegoing example, Block S110 can pass the unique identifier of thewireless beacons to Block S140, Block S140 can retrieve beacon-specificdata from a computer network (e.g., remote server) including the housingcolor of the corresponding wireless beacon, and Block S120 can implementthe housing color retrieved in Block S140 to render the position and/ororientation visualization on the mobile computing device. However, BlockS120 can display mobile computing device position and/or orientationdata in textual format or in any other form or format on the mobilecomputing device.

Block S120 can therefore estimate the location and/or orientation of amobile computing device relative to one or more wireless beacons ofknown location and/or orientation within a space (e.g., a retailsetting). Block S120 can further pass this information to Block S140,and Block S140 can implement this data to select a particularnotification or other data to push to the mobile computing device anddisplay in Block S150. For example, a particular distance between themobile computing device and a wireless beacon can be associated with aparticular product within a retail space, and Block S140 can thusimplement position data collected in Block S120 to select a notificationspecific to products associated with each position of a mobile computingdevice relative to each wireless beacon with the retail settings.Because a user can be associated with the mobile computing device, suchas based on user login information within the native retail application,Block S120 can also store time-dependent estimated position and/ororientation data of the mobile computing device with the correspondinguser (e.g., a user account), such as to track the user's movementthroughout the space or venue. However, Block S120 can function in anyother way to estimate the proximity of the mobile computing device tothe wireless beacon and can implement this data in any other suitableway.

Block S130 of the method S100 recites confirming user access to dataassociated with the wireless beacon. Generally, Block S130 implements acheck to determine that the user is authorized to access additionalbeacon data prior to delivery of additional beacon-related data in BlockS150. In one example, a Retailer A-specific native shopping applicationexecutes on a user's mobile computing device, and the user enters aRetailer B storefront. In this example, the Retailer A-specific nativeshopping application implements Block S110 to receive a uniqueidentifier from a beacon within the Retailer B storefront, implementsBlock S140 to identify the unique identifier as associated with RetailerB, and implements Block S130 to determine that a Retailer B-specificnative shopping application is not yet installed on the user's mobilecomputing device. Block S130 can subsequently prompt the user to installthe Retailer B-specific native shopping application on his mobilecomputing device and confirm access to Retailer B-specific beacon dataonce the install is complete, as shown in FIG. 2.

In the foregoing example, Block S130 further selectively execute theRetailer A- and Retailer B-specific native shopping applicationsresponsive to the determined location of the mobile computing device(and therefore the user). In particular, when the user visits Retailer Bat a later date, Block S130 can determine that the Retailer B-specificnative shopping application is present on the user's mobile computingdevice and thus automatically confirm user access to Retailer B-specificbeacon data while in the Retailer B storefront. In this example, BlockS130 can similarly determine that the Retailer A-specific nativeshopping application is present on the user's mobile computing deviceand thus automatically confirm user access to Retailer A-specific beacondata while in the Retailer A storefront. A retailer-specific nativeshopping application can include additional shopping support systemsparticular to the retailer or to a retailer location, such as a storemap, a store map/aisle/product cross-reference search feature, ashopping list, a customer service request system, etc. Thus, when theuser enters a particular storefront or retailer location, Block S130 caninterface with a wireless beacon arranged within or near the retaillocation to automatically trigger execution of a retailer- and/or retaillocation-specific native application on the mobile computing device,wherein the native application supports communication of additionproduct, location, retailer, or other data to the user and offersadditional support to the user throughout his shopping period.

The method S100 can therefore function within a retailer support systemthat further includes an software development kit (SDK) and/orapplication programming interface (API) to support a representative of aretailer, business, location, or other entity in creating a nativeapplication to interface with one or more related wireless beacons andto deliver beacon-related data and notification to mobile computingdevices, such as indoor navigation, marketing, check-in, and/or paymentinformation based on communication events between a mobile computingdevice and various wireless beacons within a store, market, or otherlocation. For example, the method S100 can support a retailer in mappinga beacon identifier to a unique uniform resource locator (URL)associated with a particular product such that a web browser applicationexecuting on a user's mobile computing device is directed to thecorresponding URL when the mobile computing device in proximity to theparticular beacon (and the corresponding particular product). In thisexample, the web browser can set a cookie in the mobile browser toconnect offline user interaction content the particular product (andonline user interactions), such as by passing a product-specific URL tothe user's mobile computing device in response to receiving a particularbeacon ID associated with the product on the DNS. The method S100 canfurther support the retailer in prioritizing beacon responses on auser's mobile computing device, such as setting a preferred, secondary,and tertiary beacon response for a set of beacons with a particularspace with overlapping beacon signals. Similarly, the method S100 cansupport publishers in prioritizing content returned to a user's mobilecomputing device when beacons are detected nearby, such as based on bidsfrom publishers.

The method S100 can also support a beacon fleet management interface.For example, the method can enable a retailer representative to accessusage, location, status (e.g., battery level), and orientation (e.g.,compass bearing) of various beacons within a particular retail space orlocation (i.e., venue) through a single online ornative-application-based interface. The method S100 can similarly enablethe retailer representative change a beacon name and/or uniqueidentifier, etc. through the interface.

Block S140 of the method S100 recites retrieving a notificationassociated with the wireless beacon from a computer network. Generally,Block S140 functions to communicate with a computer network (e.g., aremote database) to retrieve information related to the wireless beaconbased on the unique identifier received in Block S110 and to cooperatewith Block S150 to collect and present personalized micro-location-basednotification to the user through the mobile computing device. In oneimplementation, Block S140 passes the unique identifier received inBlock S110 through a DNS (as described above) to identify the particularcorresponding wireless beacon, as shown in FIGS. 1 and 2. Once thecorresponding wireless beacon is identified by the DNS, the computernetwork can select a notification or other data to pass back to BlockS140. In one example, a particular wireless beacon can be associatedwith a particular retailer storefront, and Block S140 can receive awelcome message (e.g., “Welcome to Caiti's Cakes) and a pending offer ordeal (e.g., “Buy one cupcake and get one free”). In another example, aparticular wireless beacon can be associated with a particular aislewithin a retailer store location, and Block S140 can receive an aislecontent description (e.g., “This is the households aisle”) and a couponfor a product within the aisle (“Today only: 25% off hand soap”). In yetanother example, Block S120 can pass distance and/or orientation data ofthe mobile computing device relative to one or more wireless beacons,the DNS can identify the corresponding wireless beacons, the computernetwork can extrapolate a particular product near the user according tothe mobile computing device location and/or orientation relative to theidentified wireless beacons, and Block S140 can receive a productdescription and pricing information for the particular product.

The computer network can therefore maintain a database of location,retailer, product, pricing, and/or other information for variousbeacons, selectively access data within the database based on one ormore wireless beacons proximal the mobile computing device andidentified through the DNS, and pass selected data to the mobilecomputing device via Block S140. A representative of a retailer,business, or location, etc. can thus access the SDK or API of theretailer support system described above to add, modify, and removebeacon-related or beacon-specific information in the database. Forexample, the representative can arrange various wireless beaconsthroughout a store and implement the SDK to upload a map of the store,product and wireless beacon locations within the store (e.g., inspreadsheet format), store and welcome information, customer servicecall prompts, and current and upcoming product information, pricing,and/or deals, etc. to the database. The database can then process theforegoing data to pair each wireless beacon within the store with one ormore notifications, products (e.g., therefore product information), etc.in response to receive one or more unique identifiers via Block S110.

Block S140 can also pass additional data to the computer network. Forexample, Block S140 can pass accelerometer data, gyroscope data,temperature data, humidity data, a compass bearing, and/or other datacollected from one or more wireless beacons in Block S110 to thecomputer network. Block S140 can additionally or alternatively passaccelerometer, gyroscope, GPS location, and/or other data collectedthrough sensors arranged within the mobile computing device to thecomputer network. Furthermore, Block S140 can pass user data to thecomputer network, such as a link to an online social networking profileof the user or a demographic of the user (e.g., age, gender, occupation,ethnicity, etc.) stored in a user profile managed by a related nativeretail application executing on the user's mobile computing device, tothe computer network, as shown in FIG. 1. The computer network can thenapply any of this data to customize a notification for a user prior topushing the notification back to the mobile computing device. Forexample, Block S140 can communicate a user visit frequency or a userloyalty indicator to the computer network (e.g., based on the number anddollar amount of user purchases from the store within a period of time),and the computer network can generate a product-specific discount forthe user accordingly. In another example, Block S140 can send a userdemographic to the computer network, and the computer network cancustomize the notification based on the user's demographic, such as bypushing a description of a male-specific deodorant rather than afemale-specific deodorant to the mobile computing device for the userwho is male in response to communication between the user's mobilecomputing device and a wireless beacon arranged within a personalhygiene aisle at a drug store. In yet another example, Block S140 canpush time-dependent acceleration and position data of the mobilecomputing device to the computer network, and the computer network canestimate the amount of time a user has engaged a product, estimate auser interest in the product based on the estimated engagement time, andcustomize a discount or depth of information to push back to the mobilecomputing device via Block S140. In the foregoing examples, Block S140can pass such data to the computer network over time, such as every tenseconds while the user's mobile computing device is in range of awireless beacon within a retail store. For example, the computer networkcan extrapolate a user's route through a store location based onwireless beacon IDs received by the mobile computing device and passedto the DNS over time, and the computer network can predict a subsequentproduct of interest to the user based on previous estimated productengagement within the store and select a notification to suggest thesubsequent product to the user and/or to customize a level ofinformation about the subsequent product to share with the user in anotification.

Alternatively, Block S140 can receive general information from thecomputer network and implement any of the foregoing methods ortechniques to customize notifications for the user internally. Forexample, Block S140 can receive a notification generator specific to aparticular wireless beacon or a group of wireless beacons and inputuser, beacon, or mobile computing device data, etc. into thenotification generator to output a customized notification for the user.However, Block S140 can receive and/or generate a generic or customizemicro-location based notification including any one or more of productinformation, pricing information, product reviews, product pictures,store or retails information, customer service information, in-storeguidance, etc. based on an estimated position and/or orientation of theuser's mobile computing device relative to one or more wireless beacons.

Block S150 of the method S100 recites presenting the notification to theuser on the mobile computing device based on the estimated proximity ofthe mobile computing device to the wireless beacon. Generally, BlockS150 functions to display the notification received in Block S140 forthe user. In one example, Block S150 displays the notification as apop-up notification on the display of the user's mobile computingdevice. In this example, the pop-up notification can be incomplete orcontain only the general information, and Block S150 can direct the userinto a related native application to display the remainder of thenotification to the user in response to selection of the pop-upnotification. Alternatively, Block S150 can display the notificationreceived in Block S140 directly wholly within the native application.Block S150 can additionally or alternatively trigger a vibrator withinthe mobile computing device to alert the user of the notification,transmit an audible indicator of the notification through a set ofheadphones or a (Bluetooth) headset connect to the mobile computingdevice or through a speaker within the mobile computing device, and/orpass the notification through an intelligent personal assistant toverbally communicate details of the notification to the user. However,Block S150 can present the notification to the user in any othertextual, verbal, audible, haptic, and/or other format through the mobilecomputing device and/or a peripheral device connected to the mobilecomputing device.

In one example implementation, a user approaches an entrance of a retailstore location. A native application executing on the user's mobilecomputing device implements the method S100, and Block S110 retrieves aunique identifier from a first wireless beacon near the entrance of thestore location, as shown in FIG. 2. Block S120 determines that the useris moving toward and into the store, Block S130 confirms that the nativeapplication executing on the mobile computing device corresponds to theretail store location, and Block S140 communicates with a correspondingDNS and computer network to retrieve relevant notifications. In thisexample implementation, Block S150 first presents a notificationrecites, “Hi Jim! Welcome back to Big Box Store.” Once the user entersthe store, Block S110 retrieves a unique identifier from a secondwireless beacon, Block S140 passes the second unique identifier to theDNS and the computer network, and Block S150 presents secondnotification reciting, “What are you looking for today?” The nativeapplication can then prompt the user to enter one or more products orservices currently sought. Alternatively, once the user enters thestore, Block S140 can retrieve a pre-populated shopping list or wishlist saved on the computer network or locally on the user's mobilecomputing device, and Block S150 can display the second notificationthat recites “Want to use this shopping list today?” alongside theshopping list. Subsequently, as the user moves through the store andBlock S110 and Block S120 receive additional unique identifiers andestimate the user's position relative to various wireless beacons, BlockS140 can retrieve navigation directions from the computer network todirect the user to subsequent items on the user's shopping list.Alternatively, Block S140 can download a store map populated with aisle,product, and wireless beacons locations and generate navigationalcommands accordingly to aid the user in efficiently navigating throughthe store location.

In the foregoing example implementation, the method S100 can thus enablea micro-location web mapping service to navigate a user through a storelocation. For example, wireless beacons can be arranged throughout astore location and product within the store can be mapped with relationto one or more wireless beacons. Aisles and other static features withinthe store location can be similarly mapped with relation to one or morewireless beacons. Thus, Block S120 can estimate the position of a mobilecomputing device relative to one or more wireless beacons (e.g., down toone-centimeter resolution), and Block S140 can select, receive, orgenerate product and/or navigational notifications for the user based onthe store map that relates position of products, wireless beacons, andstatic store features. Thus, when product, static store features, and/orbeacons are moved within the store location, such as when a product lineis changed or when the store location is renovated, the map can besubstantially easily updated and implemented without necessitating a mapupdate across mobile computing devices used by the store's customers.

The method S100 can further handle transmission of data from the mobilecomputing device to one or more wireless beacons. In one implementation,the wireless beacon is outfitted with a low-range and/or low-powerwireless communication capability (e.g., Bluetooth Low-Energy), and themobile computing device thus serves as a gateway to longer-distancecommunication and/or other types of communication protocol for awireless beacon. For example, the mobile computing device can be asmartphone with Internet capability, and a native retail applicationexecuting on the smartphone can download a software update for awireless beacon within range and then push an over-air software updateto the wireless beacon nearby. Thus, in this example, the mobilecomputing device can serve as a link to an external computer network toupdate software on a wireless beacon. If the mobile computing device ismoved out of range of the wireless beacon before the over-air updatecompletes, another mobile computing device passing near the wirelessbeacon at a later time can complete the over-air update.

Additionally or alternatively, wireless beacons within wireless rangecan communicate with each other. In one example, if a first wirelessbeacon receives a software update from a nearby mobile computing device,but the mobile computing device remains out of range of a secondwireless beacon, the first wireless beacon can transmit the softwareupdate to the second wireless beacon. The second wireless beacon canthen transmit the software update to a third wireless beacon out ofrange of both the mobile computing device and the first wireless beacon.Wireless beacons can thus be “daisy-chained” to effectively increase thewireless range of any particular wireless module, a particular mobilecomputing device, or any other connected wireless device. In anotherexample, a mobile computing device can transmit an over-air softwareupdate to a first wireless beacon, but the mobile computing device canmove out of range of the first wireless beacon before the updatecompletes. In this example, a second wireless beacon can receive aremaining portion of the update, and the first and second wirelessbeacons can share stored portions of the update to complete the updateon each wireless beacon. In yet another example, wireless beacons cantransmit time-dependent mobile computing device proximity and/or aunique wireless ID of the mobile computing device to nearby wirelessbeacons, such as to track user movement through the store.

One or more mobile computing devices and one or more wireless beaconscan thus form a mesh network within a retail storefront, a market, alocation, etc. However, the method S100 can function in any other way topresent a notification to a user through a mobile computing device inresponse to communication with one or more wireless beacons nearby.

In one application of the method S100, Blocks of the method S100function to guide a store representative in out-of-the-box setup of abeacon. For example, once assembled and activated (e.g., powered) abeacon can transmit a corresponding unique identifier in perpetuity(until a battery is depleted). Once shipped and after arriving at astore, a computing device within the store and loaded with acorresponding native retailer application can implement Block S110 toreceive the unique identifier from the beacon and then implement BlockS130 to confirm that the received beacon ID corresponds to a beaconassigned to and/or shipped to the store. Blocks S140 and S150 cansubsequently trigger the computing device to guide the storerepresentative through beacon setup. In this example, the nativeretailer application executing on the computing device can prompt thestore representative to place the beacon in the store and then implementBlock S120 to generate or update a map of beacons within the store. Thenative retailer application can also prompt the store representative toassign a deal, a product, or other information to the beacon or to anarea within the store corresponding to an overlap between wirelessranges of two or more beacons. Thus, the method S100 can function toautomatically guide a store representative through beacon setup once thebeacon arrives at the store location without necessitating ‘syncing’between the beacon and another device within the store and withoutnecessitating a manual input into the beacon (e.g., turning the beacon‘ON’). However, the method S100 can function in any other way to supporta store representative in beacon setup and management and/or to provideadditional product- and/or beacon-related data to a user during a visitto a store.

2. Second Method

As shown in FIG. 3, a method S200 for distributing micro-location-basednotifications to a computing device includes: receiving a uniqueidentifier from a first entity in Block S210, the unique identifiercollected from a wireless beacon by a computing device proximal thewireless beacon, the unique identifier generated locally on the wirelessbeacon according to a rule assigned to the wireless beacon; resolvingthe unique identifier into an identity of the wireless beacon based onthe rule in Block S220; identifying a second entity affiliated with thewireless beacon based on the identity of the wireless beacon in BlockS230; and in response to agreement between the first entity and thesecond entity, authorizing delivery of a communication through a nativeapplication executing on the computing device responsive to receipt ofthe unique identifier at the computing device in Block S240, thecommunication related to the first entity.

As shown in FIG. 4, the method S200 can additionally or alternativelyinclude: in response to disagreement between the first entity and thesecond entity, rejecting delivery of a communication through a nativeapplication executing on the computing device responsive to receipt ofthe unique identifier at the computing device in Block S242, thecommunication related to the first entity.

As shown in FIG. 3, one variation of the method S200 includes: receivinga unique identifier in Block S210, the unique identifier collected froma wireless beacon by a computing device proximal the wireless beacon,the unique identifier generated locally on the wireless beacon accordingto a rule assigned to the wireless beacon; resolving the uniqueidentifier into an identity of the wireless beacon based on the rule inBlock S220; identifying an entity affiliated with the wireless beaconbased on the identity of the wireless beacon in Block S230; receiving adesignator of a native application executing on the computing device inBlock S210; and in response to agreement between the entity and thedesignator, authorizing delivery of a communication through the nativeapplication executing on the computing device responsive to receipt ofthe unique identifier at the computing device in Block S240, thecommunication related to the wireless beacon.

2.1 Applications

The method S200 functions to authorize delivery of a communication froma third-party entity to a user through the user's (mobile) computingdevice in response to proximity of the computing device to a wirelessbeacon sufficient to enable wireless communication therebetween.Generally, the method S200 can control a third-party entity's access tomessaging the user's computing device directly—responsive to proximityof the computing device to a wireless beacon—based on determined paritybetween a native application executing on the user's computing deviceand ownership of (and/or access definitions assigned to) the wirelessbeacon. In particular, the method S200 can be implemented to enablethird-party entities with granted access to the wireless beacon totransmit messages (e.g., notifications) to the user's computing devicesubstantially in real-time when the computing device receives a uniqueidentifier from the wireless beacon, and the method S200 can beimplemented to prevent other third-parties not previously granted accessto the wireless beacon to deliver communications related to the wirelessbeacon to the user's computing device when the computing device comeswithin wireless range of the wireless beacon.

In one example, a first commercial airline acquires various wirelessbeacons and arranges the wireless beacons around gates of a terminalhosting commercial flights served by the first commercial airline, andthe wireless beacons are each assigned a serial number and noted in adatabase as belonging to the first commercial airline. In this example,a first customer of the first commercial airline can download a firstnative application related to (e.g., hosted by, served by) the firstcommercial airline to his smartphone (or tablet, i.e., “computingdevice”), and the first commercial airline can servenotifications—related to the first commercial airline—to the firstcustomer through the first native application in response to receipt ofa wireless identifier from the wireless beacon (i.e., when thesmartphone or tablet comes within wireless range of the wirelessbeacon). In particular, the first native application can receive theunique identifier from the wireless beacon and upload the uniqueidentifier to a first application server hosted by the first commercialairline; the first application server can pass the unique identifier toa domain name system (“DNS”) (e.g., in Block S210) to identify thecorresponding wireless beacon and to confirm that the wireless beacon isowned by the first commercial airline hosting the first nativeapplication (e.g., in Blocks S220 and S230); and the first applicationserver can upload a timely notification to the first customer'ssmartphone for (substantially) immediate presentation to the firstcustomer in response to confirmation of ownership of the wireless beaconby the related first commercial airline (e.g., in Block S240). However,in this example, a second customer can install a second nativeapplication—related to (e.g., hosted by, served by) a second commercialairline—on his smartphone, and the second native application can handlea unique identifier received from the wireless beacon by uploading theunique identifier to a second application server hosted by the secondcommercial airline; the second application server can pass the uniqueidentifier to the DNS (e.g., in Block S210); and the DNS can identifythe corresponding wireless beacon, detect a disagreement betweenownership of the wireless beacon and the second commercial airlinehosting the second native application (e.g., in Blocks S220 and S230),and reject communication from the second commercial airline responsiveto receipt of the unique identifier from the wireless beacon based onthe disagreement (e.g., in Block S242).

Therefore, the method S200 can be executed to restrict (e.g., prevent)communications from the second commercial airline in response toproximity of a customer to a wireless beacon owned by the firstcommercial airline. In particular, the method S200 can be executed toprevent a competitor of a first entity from delivering notification to acustomer of the first entity responsive to proximity of the customer toa wireless beacon owned by the first entity. For example, the methodS200 can be executed on behalf of the first commercial airline toselectively share wireless beacon data and/or authorizewireless-beacon-related communications according to permissions assignedspecifically to the wireless beacon, thereby preventing the secondcommercial airline from communicating an offer—for a flight competingwith a flight offering of the first commercial airline—to the secondcustomer's smartphone as the second customer walks passed the wirelessbeacon owned and operated by the first commercial airline.

The method S200 can also execute to selectively authorize notificationsfrom secondary third-party entities (e.g., parties outside of thecomputing device, the DNS, and the entity in possession of the wirelessbeacon) to a computing device responsive to proximity of the computingdevice to the wireless beacon. As in the foregoing example, the methodS200 can execute to enable an airport authority, the airport terminal,or other entity authorized by the first commercial airline to transmitcommunications to the first customer responsive to receipt of a uniqueidentifier from the wireless beacon owned by the first commercialairline.

The method S200 can additionally or alternatively function to confirmaccess—by the user through his computing device—to data associated withthe wireless beacon, as in method S200 described above. For example, auser can walk into a retail location with his computing device (e.g.,smartphone, tablet), the computing device can download a uniqueidentifier from a wireless beacon arranged within the retail locationonce the computing device is within wireless range of the wirelessbeacon; a remote server (e.g., a DNS, an application server) can thenupload the unique identifier (e.g., in Block S210), identify the uniqueidentifier as corresponding to the wireless beacon owned and operated bythe retail location (e.g., in Block S220 and Block S230), determine if anative application related to the retail location is installed on theuser's computing device (e.g., in Block S210), and enable communicationof product- and/or retailer-related information to the user through thecomputing device if the native application is installed on the user'scomputing device (e.g., in Block S240). The method S200 can therefore beimplemented to enable substantially real-time notifications to a userthrough a branded native application executing on the user's nativeapplication, the notifications related to a retailer, service provider,etc. currently occupied or engaged by the user.

The method S200 can be executed by a computer system remote from theuser's computing device, such as by a DNS hosted on a remote server anddistinct from an entity in possession of the wireless beacon, or such asby an application server hosted on a remote server on behalf of theentity in possession of the wireless beacon. The computer system can becloud-based (e.g., Amazon EC2), a mainframe computer system, agrid-computer system, or any other suitable computer system. Blocks ofthe method S200 can additionally or alternatively execute locally on auser's computing device, such as on a native application executing onthe user's smartphone, tablet, a personal music player, a personal dataassistant (PDA), or other mobile computing device. For example, Blocksof the method S200 can be implemented by a handheld (e.g., mobile)computing device, such a smartphone, a digital music player, or a tabletcomputer executing a native retailer- or service provider-brandedapplication handling real-time delivery of communications to a userresponsive to receipt of unique identifiers from local wireless beacons.

2.2 Unique Identifier

Block S210 of the method S200 recites receiving a unique identifier froma first entity, the unique identifier collected from a wireless beaconby a computing device proximal the wireless beacon, the uniqueidentifier generated locally on the wireless beacon according to a ruleassigned to the wireless beacon. Block S210 can similarly recitereceiving a unique identifier collected from a wireless beacon by acomputing device proximal the wireless beacon, the unique identifiergenerated locally on the wireless beacon according to a rule assigned tothe wireless beacon. Generally, Block S210 functions to collect a uniqueidentifier transmitted wirelessly from a wireless beacon to a computingdevice (e.g., a mobile computing device, such as a smartphone, a tablet,a personal music player, a PDA, etc.).

In one implementation in which Block S210 is executed remotely from thecomputing device, the computing device can cyclically broadcast arequest for a unique identifier, such by transmitting a request overBluetooth communication protocol on a two-second interval. Once awireless beacon comes within wireless range of the computing device, thecomputing device can download a unique identifier from the wirelessbeacon and then upload the unique identifier directly to a DNS thatconverts the unique identifier into an identity (e.g., a serial number)of the wireless beacon. The DNS can then communicate directly with anative application related to the wireless beacon and executing on theuser's computing device to deliver a related communication to the user,as shown in FIG. 5A. Alternatively, the DNS can communicate directlywith a particular application server related to the wireless beacon(affiliated with an entity in possession of the wireless beacon or inpossession of access to the wireless beacon) to confer authorization tocommunicate a notification related to the wireless beacon to the user'scomputing device, as shown in FIG. 5B.

In a similar implementation, once a wireless beacon comes withinwireless range of the computing device, the computing device candownload the unique identifier from the wireless beacon, and a nativeapplication executing on the computing device and supportingcommunications with wireless beacons can then upload the uniqueidentifier to an application server related to (e.g., hosting) thenative application. The application can then pass the unique identifierto a DNS that converts the unique identifier into an identity of thewireless beacon (e.g., in Block S210), confirms access to the wirelessbeacon by the native application (in Block S240), and transmits—to theapplication server—authorization for native application to communicationwireless beacon-related information to the user, as shown in FIG. 5C.Alternatively, application server can execute a domain name systeminternally to execute Blocks S220, S230, and/or S240, etc. locally, andthe application server can thus communicate directly with the computingdevice to deliver messages to the user responsive to communicationsbetween the wireless beacon and the user's computing device.

In yet another implementation, a native application, a system-levelprocess, or other program executing on the computing device performsBlocks S210, S220, and/or S230, etc. locally to collect a uniqueidentifier from the wireless beacon, to resolve the unique identifierinto an identity of the wireless beacon, and/or to ascertain permissionto deliver communications to the user responsive to receipt of theunique identifier from the wireless beacon, etc.

The first entity from which the unique identifier is received in BlockS210 can therefore include the wireless beacon, a native application orother program or process executing on the computing device, or anapplication server related to a native application or other programexecuting on the computing device. However, the unique identifier can becollected in any other way, and the unique identifier can be routed—inBlock S210—from the wireless beacon to any other local or remoteapplication, program, process, server, and/or system for resolution intoan identity of the wireless beacon according to any other schema orschedule.

Block S210 can further recite receiving a designator of a nativeapplication executing on the computing device. In particular, Block S210can append a designator for the first entity—from which or through whichthe unique identifier of the wireless beacon is collected—to the uniqueidentifier or group the designator for the first entity with the uniqueidentifier. For example, a native application executing on the user'scomputing device can broadcast a unique identifier request when thelocation of the computing device is within a threshold (GPS) location ofa known location of a wireless beacon, download a unique identifier froma local wireless beacon, and upload the unique identifier to a remoteserver; Block S210, executing on the remote server (e.g., on anapplication server, on a DNS) can collect the unique identifier and adesignator identifying the native application, a version of the nativeapplication, an entity hosting or affiliated with the nativeapplication, and/or a software developer of the native application. Inthis example, Block S240 can thus selectively authorize communicationsrelated to the wireless beacon through the native application based onagreement between the native application (the first entity, asdetermined from the designator) and an owner and/or operator of thewireless beacon (the second entity). In a similar example, asystem-level process executing on the computing device can prompt andreceive the unique identifier from the wireless beacon, and Block S210can retrieve the unique identifier in conjunction with a list ofdesignators for native applications installed on the computing deviceand configured to deliver notifications to the user responsive tocommunications with local wireless beacons. In this example, Block S240can thus selectively authorize communications related to the wirelessbeacon through the computing device based on agreement between a nativeapplication (the first entity) on the list of native applications and anowner of the wireless beacon (the second entity). In yet anotherexample, Block S210 can collect the unique identifier from anapplication server, and Block S210 can pair the unique identifier with adesignator of the application server, such as a software developer nameor number. In this example, Block S240 can thus selectively authorizecommunications related to the wireless beacon through a nativeapplication supported by the application server based on agreementbetween the application server designator (the first entity) and anowner of the wireless beacon (the second entity).

Block S220 of the method S200 recites resolving the unique identifierinto an identity of the wireless beacon based on the rule in Block S220.Generally, Block S220 functions to identify the wireless beacon from theunique identifier received in Block S210. For example, Block S220 cantranslate the unique identifier into a unique serial number assigned tothe wireless beacon. In another example, Block S220 can translate theunique identifier into a pointer to a local or remote file or databasespecific to the wireless beacon. Alternatively, Block S220 can translatethe unique identifier into an identity, serial number pointer, address,etc. of a manufacturing batch number, a deployment group number, anowner, a lessee, and/or a deployment location, etc. of or related to thewireless beacon. However, Block S220 can resolve the unique identifierreceived in Block S210 into any other useful or relevant data pertainingto the wireless beacon.

The wireless beacon can store locally and (intermittently) recall a ruleto locally generate a unique identifier that is not immediatelyresolvable into a useful value without access to the rule, and thewireless beacon can then publically broadcast this unique identifier forcollection by any local computing device. For example, the wirelessbeacon can broadcast a universally unique identifier (“UUID”), such asincluding a string of characters (e.g., a 128-bt hexadecimal number) inwhich the string of characters is practically unique (i.e., notguaranteed unique). The wireless beacon can also pass its own serialnumber (stored locally in memory), a unique identifier request countervalue, an interval counter value, a time of day, a date, and/or anyother static value or variable value into the rule to generate theunique identifier that is practically unique among substantially allother unique identifiers broadcast from all other deployed wirelessbeacons over time.

In one example, the rule for generating the unique identifier can beencoded onto the wireless beacon during its manufacture, upon purchaseby an entity (e.g., the second entity), or upon deployment of thewireless beacon into a space, etc. The wireless beacon can thenimplement the rule to generate new unique identifiers over time duringits deployment. For example, the wireless beacon can: index a requestcounter in response to receipt of a new request for a unique identifierreceived from a local computing device; apply the state of the requestcounter and an internal serial number to the rule to generate a newunique identifier responsive to the request; and broadcast the uniqueidentifier with the state of the request counter for collection by thecomputing device accordingly. In this example, Block S210 (executedlocally on the computing device or remotely) can then pass the requestcounter value and the unique identifier into a reverse rule engine (towhich access is limited, such as only to a privately-controlled DNS) toresolve the unique identifier into the serial number of the wirelessbeacon.

Alternatively, the wireless beacon can systematically generate a newunique identifier for each subsequent time interval during itsdeployment, such as by generating a new unique identifier every fiveminutes during its deployment. For example, the wireless beacon can:maintain an internal interval counter and index the interval counterforward every minutes; apply the new interval counter value to generatea new unique identifier for the current time interval; and publicallybroadcast this new unique identifier for collection by a local computingdevice. As in the previous example, Block S210 can pass the intervalcounter value and the unique identifier into a reverse rule engine toresolve the unique identifier into a serial number of the wirelessbeacon.

However, the wireless beacon can apply a time of day corresponding togeneration of the unique identifier (a “time code”), a date ofgeneration of the unique identifier (a “date code”), a time or date ofreceipt of the unique identifier at the computing device, and/or anyother trackable variable to the rule to generate the unique identifier,and Block S220 can extract this variable from a data packet—includingthe unique identifier—received from the wireless beacon to resolve theunique identifier into an identity of the wireless beacon.

Block S220 can therefore access a rule (or a reverse rule engine)related to that encoded into or stored on the wireless beacon totransform the unique identifier broadcast from the wireless beacon intouseful information pertaining to the wireless beacon. For example,substantially all deployed wireless beacons can be encoded with the samerule that outputs a unique identifier based on a serial number, acounter value, and any other static or dynamic variable value storedlocally on a wireless beacon. Block S220 can thus resolve the uniqueidentifier by accessing a private copy of the rule (or a reverse ruleengine) and applying a received counter value and/or an other variablevalue to the private copy of the rule to output the identity of thewireless beacon. Similarly, one of a variety of distinct rules can beencoded into each deployed wireless beacon, and Block S220 can test theunique identifier received in Block S210 against a copy of each distinctrule until a valid wireless beacon identity value is output. Yetalternatively, Block S220 can extract a value from the received uniqueidentifier, correlate this value with a particular rule encoded onto thewireless beacon, and apply the (remainder of) the unique identifier to acopy of the particular rule to determine an identity of the wirelessbeacon (or an identity of the second entity, an identity of an otherentity affiliated with the wireless beacon, a location of the wirelessbeacon, and/or a pointer or address for the wireless beacon, etc.).

Block S220 can therefore be executed locally on the computing device,remotely on an application server, and/or remotely on a serverimplementing a DNS and/or in cooperation with a local or remote databaseof wireless beacon data, private wireless beacon rules, etc. However,Block S220 can function in any other way to resolve an identity of thewireless beacon from the unique identifier according to any otherschema.

2.3 Entity Affiliated with Wireless Beacon

Block S230 of the method S200 recites identifying a second entityaffiliated with the wireless beacon based on the identity of thewireless beacon. Generally, Block S230 functions to identify one or moreentities granted permission to deliver beacon-related communications toa computing device responsive to communication between the computingdevice and the wireless beacon.

In one implementation, Block S230 passes a serial number of the wirelessbeacon—resolved from the unique identifier in Block S220—into a databasespecifying wireless beacon ownership by serial number to identify aparticular entity (i.e., the second entity) in possession of thewireless beacon. For example, a lookup table can be updated with aserial number of the wireless beacon and an identity of the entity(e.g., a customer number, a customer name) when the wireless beacon issold to (or shipped to, etc.) the entity. In another example, a filespecific to the wireless beacon can be generated when the wirelessbeacon is manufactured, the file initially specifying a serial numberand a configuration of the wireless beacon, and the file can be updatedwith ownership information when the sold wireless beacon is sold (orshipped to, etc.) the entity. In this example, the file can be linked toa pointer specific to the wireless beacon, Block S220 can resolve theunique identifier received in Block S210 into a pointer, and Block S230can access ownership information for the wireless beacon by retrievingthe file via the resolved pointer.

Block S230 can therefore manipulate the identity of the wireless beacondetermined in Block S220 to identify a primary entity possessingownership of the wireless beacon, such as: a toy store, a clothingstore, a car dealership, or other retail location; an airport, airportterminal, airport terminal gate, a public bus system, a train or railsystem, or other service provider; or a school, a park, a restaurant, acoffee shop, an office, a museum, or any other type entity occupying oraffiliated with any other type space.

Block S230 can additionally or alternatively manipulate the identity ofthe wireless beacon to identify a particular space occupied by thewireless beacon. For example, the database or file containing wirelessbeacon identity data can specify a GPS location, address, room number,and/or room or location code, etc. in which the wireless beacon isinstalled. Block S230 can therefore determine the (second) entity thatincludes or is related to a particular physical space.

Block 230 can further identify a particular product or serviceaffiliated with the wireless beacon based on the identity of thewireless beacon. For example, the wireless beacon can be installed on orotherwise coupled to a particular product within a retail environment orshowroom; an operator of the wireless beacon can update a file specificto the wireless beacon with a serial number, SKU number, a manufacturername or number, and/or a model name or number, etc. of the correspondingproduct; and Block S230 can retrieve any one or more of the foregoingproduct-related data from the wireless beacon file (shown in FIGS. 3 and4) based on the identifier of the wireless beacon to identify theproduct.

Block S230 can also identify one or more other parties authorized tocommunicate notifications through a computing device through thewireless beacon (i.e., response to communication between the wirelessbeacon and the computing device). In particular, Block S230 can access adatabase, beacon file, or other data repository enumerating partiesauthorized to deliver communications through the native applicationresponsive to data transfer between the wireless beacon and thecomputing device. The database or other repository can include a staticor updateable list of parties provided such access to the wirelessbeacon, such as set and controlled by the owner and/or operator of thewireless beacon (i.e., the second entity). For example, an owner oroperator of the wireless beacon can update a file specific to thewireless beacon with a name, number, IP address, application serveraddress, customer number, and/or real location, etc. of each company,individual, native application, etc. authorized to communicate withlocal users through the wireless beacon, and Block S230 can retrievethese data from the beacon file to identify secondary third-partyentities granted access to the wireless beacon.

In the example above in which the wireless beacon is owned by acommercial airline operating in a series of gates in a terminal of acommercial airport, the beacon file can indicate that a terminaloperator in the commercial airline's terminal and an airport operatorfor the commercial airport are both authorized to communicate with localusers responsive to communications between the users' computing devicesand the wireless beacons, such as in the event of a terminal or airportemergency, a security alert, an airport or terminal shutdown, a runwayclosure, etc. In another example, the wireless beacon is owned andoperated by a local retail location that sells products from a varietyof vendors; is arranged in the retail location on or near a productsupplied by a particular vendor; and is associated with a beacon fileindicating that the particular vendor is authorized to delivernotifications to a customer's computing device responsive tocommunication between the computing device and the wireless beacon. Inthis example, Block S230 can access the beacon file to determine thatthe particular vendor has been granted permission to communicationthrough the wireless beacon, and Block S240 can match a designator of anative application executing on a customer's computing device—asreceived in Block S210—to the particular vendor. In response to thepositive match between the native application and the particular vendor,Block S240 can authorize the particular vendor to communicate with thecustomer through the affiliated native application responsive tocommunication between the customer's computing device and the wirelessbeacon owned and operated by the retail location distinct from theparticular vendor. Therefore, Block S230 can identify a retail locationaffiliated with the wireless beacon based on the identity of thewireless beacon, and Block S240 can authorize delivery of a notificationrelated to a product in inventory at the retail location, through thenative application, in response to identification of an affiliationbetween the retail location and the native application executing on thecomputing device. For example, Block S240 can authorize delivery of anotification specifying a limited discount price of the product for auser associated with the computing device, as described above.

However, a list of designators of secondary third-party entitiesentitled to access the particular wireless beacon (or a group of localwireless beacons) can be populated in a table, beacon file, database, orany other repository, and Block S230 can access this repository in anyother way to identify one or more entities (including or other than anowner/operator of the wireless beacon) authorized to communicate with auser through the wireless beacon.

2.4 Communication Authorization

Block S240 of the method S200 recites, in response to agreement betweenthe first entity and the second entity, authorizing delivery of acommunication through a native application executing on the computingdevice responsive to receipt of the unique identifier at the computingdevice in Block S240, the communication related to the first entity.Block S240 can similarly recite, in response to agreement between theentity and the designator, authorizing delivery of a communicationthrough the native application executing on the computing deviceresponsive to receipt of the unique identifier at the computing devicein Block S240, the communication related to the wireless beacon.Generally, Block S240 functions to confirm parity between the firstentity and the second entity before authorizing the first party tocommunicate with the user through the wireless beacon. In particular,given suitable parity between the first entity and the second entity,Block S240 selectively authorizes the second entity (e.g., a nativeapplication, an application server) to deliver a notification to theuser through the user's computing device substantially in real-timeafter the computing device receives a unique identifier from thewireless beacon.

In one implementation, Block S240 matches a native application executingon the user's computing device directly to ownership of the wirelessbeacon and authorizes the notification to serve a timely,location-specific notification to the user's computing devicesubstantially in real-time responsive to receipt of the uniqueidentifier from the wireless beacon to the computing device. Forexample, the user's computing device can collect a unique identifierfrom a wireless beacon arranged proximal a gate operated by a firstcommercial airline at a commercial airport, a native applicationexecuting on the computing device can upload the unique identifier to acorresponding application server, and the application server can passthe unique identifier and an IP address, proxy address, or otheridentifier of the application server to a DNS executing the method S200,as shown in FIG. 3. Block S230—executing on the DNS—can identify thefirst commercial airline as an owner and operator of the wireless beaconbased on a serial number of the wireless beacon extracted from theunique identifier in Block 220; and Block S240 can match the IP address,the proxy address, or the other identifier of the application server tothe first commercial airline and confer authorization for theapplications server to serve a notification to the user through thenative application executing on the computing device accordingly. Inthis example, the first commercial airline can thus own the wirelessbeacon, install the wireless beacon near a gate in which the commercialairline operates, serve a branded native application for installation oncustomer devices (e.g., smartphones), the branded native applicationhosted on an application server on behalf of the first commercialairline; the method S200 can thus enable the first commercial airline todeliver notifications to its customers through its own branded nativeapplication responsive to communication between its customers'smartphones and its wireless beacons. Block S240 can therefore authorizedelivery of a notification from the first entity (e.g., the applicationserver) to the computing device in response to a direct match betweenthe first entity and the second entity (e.g., the owner/operator of thewireless beacon).

In a similar example, the method S200 can interface directly with theinstance of the native application executing on the user's computingdevice to confirm presentation of a beacon-related notification to theuser. In this example, Block S210 can receive the unique identifier andan address or other identifier of the native application directly fromthe computing device, and Block S240 can match the identifier of thenative application directly to an address or other identifier of theowner/operator of the wireless beacon. Block S240 can supplyauthorization to communicate a beacon-related notification directly tothe native application given a positive match. Block S240 can thereforesearch for a direct match between the second entity and a designator ofthe native application executing on the user's computing device, theapplication server, etc. Block S240 can access a table, file, database,or other data repository containing (IP) addresses, proxies, or anyother designator or identifier of the first and second entities tosearch for such a match.

In another implementation, Block S240 searches for a match between thesecond entity (e.g., an owner, an operator, a lender, and/or a lessee ofthe wireless beacon) and the first entity not immediately or directlyaffiliated with the wireless beacon. For example, Block S240 can selecta database of authorized parties specific to the wireless beacon and setby the owner of the wireless beacon; parse through the database for amatch to the designator of the first entity received in Block S210; andthen transmit—to the party or to an affiliate of the party (e.g., anapplication server hosting a native application developed by theparty)—authorization for the communication to the user's computingdevice. Block S240 can therefore authorize delivery of a notificationfrom the first entity (e.g., the application server) to the computingdevice in response to identification of the first entity in the databaseof parties authorized to communicate through the wireless beacon.

In one implementation in which an application server hosting the nativeapplication executing on the user's computing device also executes themethod S200, Block S240 can further include transmitting a notificationto the computing device in response to a match between the first entityand the second entity, the notification related to the first entity anddesignated for visual presentation on the computing device. For example,Block S240 can elect a current notification specific to the wirelessbeacon, current notification corresponding to a local cluster ofwireless beacons owned by the second entity (or authorized to the firstentity), or a current notification generic to substantially all wirelessbeacons owned by the second entity (or authorized to the first entity),and Block S240 can thus trigger delivery of the elected notification tothe computing device, such as over cellular communication protocol.Block S240 can also set the notification for immediate or delayedpresentation on the computing device or add the notification to a queueof notifications for visual presentation to the user via the computingdevice. Alternatively, Block S240 can assign a maximum thresholddistance between the computing device and the wireless beacon to triggervisual presentation of the notification on the computing device. Thenative application (or other process) executing on the computing devicecan then estimate a distance between the wireless beacon and thecomputing device, such as based on a time of flight technique asdescribed above, and the native application can present the notificationwhen the threshold maximum distance is reached.

Block S240 can additionally or alternatively authorize transmission of acommunication—related to a position of the wireless beacon within aspace affiliated with the first entity—to the computing device. Forexample, Block S210 can further include receiving a second uniqueidentifier, the second unique identifier collected from a secondwireless beacon by the computing device proximal the second wirelessbeacon, the second unique identifier generated locally on the secondwireless beacon according to the rule. Block S210 can also includereceiving a first wireless signal strength value of the (first) wirelessbeacon and receiving a second wireless signal strength value of thesecond wireless beacon. In this example, Block S240 can then prioritizeauthorization of delivery of the communication related to the wirelessbeacon over authorization of delivery of a second communication relatedto the second wireless beacon according to the first wireless signalstrength value that exceeds the second wireless signal strength value.

However, Block S240 can match the first entity and the second entityaccording to any other accessible beacon-related data and in any othersuitable way, and Block S240 can function in any other way to authorizeand/or trigger delivery of any other type of communication to the userthrough the user's computing device.

As shown in FIG. 4, one variation of the method S200 includes BlockS242, which recites, in response to disagreement between the firstentity and the second entity, rejecting delivery of a communicationthrough a native application executing on the computing deviceresponsive to receipt of the unique identifier at the computing devicein Block S242, the communication related to (e.g., sources from, brandedfor) the first entity. Generally, Block S242 functions to block orotherwise inhibit delivery of a communication—related to the wirelessbeacon—to the user's computing device responsive to communicationbetween the computing device and the wireless beacon if the first entitydoes not sufficiently meet agreement criteria specified for the wirelessbeacon. Therefore, Block S242 can execute if Block S240 returns anegative or false value. For example, based on the second entity, BlockS242 can select a database of parties authorized to delivercommunications through the native application responsive to datatransfer between the wireless beacon and the computing device, and BlockS242 can then transmit a communication rejection for the communication(e.g., to the application server or directly to the computing device) inresponse to omission of the first entity from the database of parties.However, Block S242 can function in any other way to reject delivery ofa communication to the user through the computing device in response todisagreement between the first entity and the second entity.

2.5 Variations

In one example application, the method S200 executes locally on thecomputing device. In this example application, Block S210 includesdownloading the unique identifier from the wireless beacon in responseto a wireless signal from the wireless beacon exceeding a thresholdwireless signal; and Block S220 includes resolving the unique identifierinto the identity of the wireless beacon locally based on the rulestored on the computing device. In this example application, Block S222can include detecting the native application installed on the computingdevice and related to the entity; and Block S240 can include, inresponse to detecting the native application installed on the computingdevice and related to the entity, queuing a notification forpresentation on the computing device responsive to receipt of the uniqueidentifier from wireless beacon. For example, Block S240 can includedownloading the notification from a remote database to the computingdevice, the remote database containing a set of notifications affiliatedwith the entity and the wireless beacon.

In the foregoing example implementation, the method S200 can furtherestimating the proximity of the computing device to the wireless beacon;and displaying the notification on the computing device based on theproximity of the computing device to the wireless beacon. Thus, thecomputing device can render (a form of) the notification on a display ofthe computing device when the user is within a threshold distance fromthe wireless beacon. For example, the computing device can render thenotification for review by the user substantially in real-time once thecomputing device comes into wireless range of the wireless beacon, thecomputing device receiving the unique identifier substantiallyimmediately once within wireless range of the wireless beacon.Alternatively, the computing device can execute Block S210 to collectthe unique identifier from the wireless beacon once the computing deviceis within wireless range of the wireless beacon, Block S240 can downloadand queue the notification for presentation to the user once thecomputing device is within a threshold distance of the wireless beaconless than the distance corresponding to the maximum wireless range, andthe computing device can render the notification on a display of thecomputing device once the wireless beacon is detected within thethreshold range of the computing device, such as described above.

In another variation of the method, Block S240 includes transmitting adoor open request to a door controller controlling an automated doorarranged at an entrance to a physical space in response to agreementbetween the first entity and the second entity, the first entityaffiliated with the native application, and the second entity affiliatedwith the physical space. Generally, in this variation, the method canfunction to control access to a physical space, such as a retail storeor showroom, by enabling only user's with a native application relatedto the physical space to enter there into. For example, the method cantrigger an automatic door (e.g., an electric sliding door) at anentrance to a store to open to a user outside the store only when: 1)the user's computing device is near enough to the entrance of the storeto receive a unique identifier from a wireless beacon arranged at theentrance (as in Block S210); and 2) a native application related to thestore is installed on the user's computing device. If the user'scomputing device is not loaded with the correct native application, themethod can prompt the user to download the native application in orderto gain access to the store. Once installation of the native applicationon the computing device is confirmed, the Block S240 can deliver (orauthenticate delivery of) an access granted communication through thenative application to thus prompt the user to enter the store. Once theuser thus enters the store, the method can then deliver product- andstore-related information to the user through the native application,such as based on further communications between the user's computingdevice and other wireless beacons arranged within the store. The methodcan also trigger (or transmit to the computing device a prompt totrigger) the native application to open on the user's computing devicesuch that notifications and/or other communications related to the storecan be delivered to the user through the native application (which canbe branded for the store, for products, and/or for services availablewithin the store). In this variation, Blocks of the method can executelocally on the user's (mobile) computing device, on a door controllerwithin the physical space, on a local remote server within the physicalspace, or remotely, such as on an application server or DNS server thatcommunicates (e.g., over and Internet or cellular network) with theuser's computing device and/or with a door access controller within thephysical space.

The systems and methods of the embodiments can be embodied and/orimplemented at least in part as a machine configured to receive acomputer-readable medium storing computer-readable instructions. Theinstructions can be executed by computer-executable componentsintegrated with the application, applet, host, server, network, website,communication service, communication interface,hardware/firmware/software elements of a user computer or mobile device,or any suitable combination thereof. Other systems and methods of theembodiments can be embodied and/or implemented at least in part as amachine configured to receive a computer-readable medium storingcomputer-readable instructions. The instructions can be executed bycomputer-executable components integrated by computer-executablecomponents integrated with apparatuses and networks of the typedescribed above. The computer-readable medium can be stored on anysuitable computer readable media such as RAMs, ROMs, flash memory,EEPROMs, optical devices (CD or DVD), hard drives, floppy drives, or anysuitable device. The computer-executable component can be a processor,though any suitable dedicated hardware device can (alternatively oradditionally) execute the instructions.

As a person skilled in the art will recognize from the previous detaileddescription and from the figures and claims, modifications and changescan be made to the embodiments of the invention without departing fromthe scope of this invention as defined in the following claims.

We claim:
 1. A method for presenting location-based notifications to auser device, the method comprising, at a remote system: receiving afirst application identifier for a first application, wherein the firstapplication identifier identifies a first application of a set ofauthorized applications associated with a beacon owner; storing a firstmanufacturer beacon identifier for a first wireless beacon controlled bythe beacon owner; associating the first application identifier with thefirst manufacturer beacon identifier; receiving a first broadcast beaconidentifier from a requesting application executed by the user device,wherein the requesting application is identified by a requestingapplication identifier; resolving the first broadcast beacon identifierinto a first analysis beacon identifier; and in response to the firstanalysis beacon identifier matching the first manufacturer beaconidentifier and the requesting application identifier matching the firstapplication identifier, authorizing delivery of a first communication,associated with the beacon owner, to the user device through therequesting application.